#include <iostream>
#include <vector>
#include <algorithm>
#include <string.h>
#include <set>
using namespace std;

//int P(int x, int y)
//{
//    while (y)
//    {
//        int p = x % y;
//        x = y;
//        y = p;
//    }
//    return x;
//}
//
//int main() {
//    long long n, m;
//    cin >> n >> m;
//    while (n--)
//    {
//        int k;
//        cin >> k;
//        if (m > k)
//        {
//            m += k;
//        }
//        else
//        {
//            m += P(m, k);
//        }
//    }
//    cout << m << endl;
//    return 0;
//}
//
//#include <vector>
//class Solution {
//public:
//    int maxValue(vector<vector<int> >& grid) {
//        // write code here
//        int n = grid.size();
//        int m = grid[0].size();
//        vector<vector<int>> board(n + 1, vector<int>(m + 1));
//        for (int i = 1; i <= n; i++)
//        {
//            for (int j = 1; j <= m; j++)
//            {
//                board[i][j] = max(board[i - 1][j], board[i][j - 1]) + grid[i - 1][j - 1];
//            }
//        }
//        return board[n][m];
//    }
//};

bool triumph(vector<string>& str, int k, int n, string s)
{
    if (k == n)
    {
        int left = 0;
        int right = n - 1;
        while (left < right)
        {
            if (s[left] != s[right])
            {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
    int n1 = str[k].size();
    for (int i = 0; i < n1; i++)
    {
        if (triumph(str, k + 1, n, s + str[k][i]))
        {
            return true;
        }
    }
    return false;
}

int main() {
    int t;
    cin >> t;
    while (t--)
    {
        int n;
        cin >> n;
        vector<string> str;
        for (int i = 0; i < n; i++)
        {
            string s;
            cin >> s;
            str.push_back(s);
        }
        string s;
        if (triumph(str, 0, n, s))
        {
            cout << "Yes" << endl;
        }
        else
        {
            cout << "No" << endl;
        }
    }
    return 0;
}

bool vis[110][26] = { false };

bool check(int left, int right)
{
    for (int i = 0; i < 26; i++)
    {
        if (vis[left][i] && vis[right][i])
        {
            return false;
        }
    }
    return true;
}

int main() {
    int t;
    cin >> t;
    while (t--)
    {
        memset(vis, 0, sizeof(vis));
        int n;
        cin >> n;
        vector<string> str;
        for (int i = 0; i < n; i++)
        {
            string s;
            cin >> s;
            str.push_back(s);
        }
        for (int i = 0; i < n; i++)
        {
            for (auto s : str[i])
            {
                vis[i][s - 'a'] = true;
            }
        }
        int left = 0;
        int right = n - 1;
        while (left < right)
        {
            if (check(left, right))
            {
                break;
            }
            left++;
            right--;
        }
        if (left < right)
        {
            cout << "No" << endl;
        }
        else
        {
            cout << "Yes" << endl;
        }
    }
    return 0;
}

int main() {
    int n, m;
    cin >> n >> m;
    set<int> s;
    for (int i = 0; i < n + m; i++)
    {
        int k;
        cin >> k;
        s.insert(k);
    }
    for (auto s1 : s)
    {
        cout << s1 << " ";
    }
    return 0;
}

int main() {
    int arr[255] = { 0 };
    string str;
    getline(cin, str);
    for (auto s : str)
    {
        arr[s]++;
    }
    int sum = 0;
    int k = 0;
    for (int i = 0; i < 255; i++)
    {
        if (arr[i] % 2 == 0)
        {
            sum += arr[i];
        }
        else
        {
            if (k == 0)
            {
                sum += arr[i];
                k = 1;
            }
            else if (k == 1 && arr[i] > 1)
            {
                sum += arr[i] - 1;
            }
        }
    }
    cout << sum << endl;
    return 0;
}